<?php

//双向队列的实现
class DoubleEndedQueue
{
    public $elements;

    public function __construct()
    {//析构函数,创建一个数组
        $this->elements = array();
    }

    public function push($element)
    {//array_unshift() 函数在数组开头插入一个或多个元素。
        array_unshift($this->elements, $element);
    }

    public function pop()
    {
        return array_shift($this->elements);//PHP array_shift() 函数删除数组中的第一个元素_
    }

    public function inject($element)
    {//给数组末尾追加元素，无指定下标，默认为数字
        $this->elements[] = $element;
    }

    public function eject()
    {
        array_pop($this->elements);//PHP array_pop() 函数删除数组中的最后一个元素
    }
}

//实例化该类，测试下
$a = new DoubleEndedQueue();

$a->inject('aa');//给数组末尾追加元素，无指定下标，默认为数字
$a->inject('dd');
$a->inject('cc');
$a->inject('dd');
$a->push('111');//函数在数组开头插入一个或多个元素。
$a->pop();//PHP array_shift() 函数删除数组中的第一个元素_
$a->eject();//PHP array_pop() 函数删除数组中的最后一个元素
print_r($a->elements);
